package pl.edu.pw.elka.tinyrepo.gate.descriptor;

import java.io.FileNotFoundException;

import pl.edu.pw.elka.tinyrepo.common.exceptions.ContentAlreadyExistException;
import pl.edu.pw.elka.tinyrepo.common.exceptions.WrongPathException;

public class RepoDescriptorTest {
   public static void main(String[] args) throws FileNotFoundException, WrongPathException, ContentAlreadyExistException {
      RepoDescriptor d = new RepoDescriptor();
      d.addDataServerDescriptor(new DataServerDescriptor("Tytus", null));
      d.addDataServerDescriptor(new DataServerDescriptor("Romek", null));
      d.addDataServerDescriptor(new DataServerDescriptor("Atomek", null));
      d.addFileOrDirectoryDesc(new CatalogDescriptor(), "/tytus");
      d.addFileOrDirectoryDesc(new CatalogDescriptor(), "/romek i atomek");
      d.addFileOrDirectoryDesc(new CatalogDescriptor(), "/romek i atomek/home");
      // przychodzi GET od klienta zeby odebrac plik /tytus/Tytus 
      String best = d.getBestDataServer().getHostName();
      System.out.println("Redirect: "+d.getBestDataServer().getHostName());
      // klient wysyla ponownie GET do wskazanego DSa, DS wywoluje metode bramy podajac deskryptor pliku oraz sciezke gdzie nalezy umiescic plik
      FileDescriptor f1 = new FileDescriptor(5, best, 100L);
      d.addFileOrDirectoryDesc(f1, "/tytus/Tytus");
      // kolejne
      best = d.getBestDataServer().getHostName();
      System.out.println("Redirect: "+d.getBestDataServer());
      // klient wysyla ponownie GET do wskazanego DSa, DS wywoluje metode bramy podajac deskryptor pliku oraz sciezke gdzie nalezy umiescic plik
      FileDescriptor f2 = new FileDescriptor(1, best, 10L);
      d.addFileOrDirectoryDesc(f2, "/romek i atomek/home/romek");
      // i jeszcze jedno
      best = d.getBestDataServer().getHostName();
      System.out.println("Redirect: "+d.getBestDataServer());
      // klient wysyla ponownie GET do wskazanego DSa, DS wywoluje metode bramy podajac deskryptor pliku oraz sciezke gdzie nalezy umiescic plik
      FileDescriptor f3 = new FileDescriptor(6, best, 1L);
      d.addFileOrDirectoryDesc(f3, "/romek i atomek/home/Atomek");
      CatalogDescriptor.printCatalog("/", d.root);
      System.out.println("Zawartosc kolejki: "+d.dsQueue);
      d.removeFileOrDirectoryDesc("/romek i atomek/");
      System.out.println("Zawartosc kolejki po usunieciu: "+d.dsQueue);
      d.removeFileOrDirectoryDesc("/tytus");
      System.out.println(d.dsQueue);
      
   }
}
